export interface Tree {
  label: string;
  id?: number;
  children?: Tree[];
  icon?: string;
  lazy?: boolean;
  leaf?: boolean;
}

export interface User {
  id: number;
  date: string;
  name: string;
  address: string;
  hasChildren?: boolean;
  children?: User[];
}

export interface projectGroupListVo {
  groupId?: number;
  projectName?: string;
  name?: string;
    isManagerGroup?:boolean;
  corpName?: string;
  startDate?: Date;
  endDate?: Date;
  personCount?: number;
  createTime?: Date;
}

export interface projectGroupMemberListVo {
  id?: number;
  groupName?: string;
  personName?: string;
  cardNumber?: string;
  mobile?: string;
  typeName?: string;
  isLeader?: boolean;
  hasContract?: boolean;
  workDate?: Date;
  createTime?: Date;
  issueCardDate?: Date;
  status?: number;
  statusName?: string;
  startDate?: Date;
  endDate?: Date;
  corpId?: number;
  personId?: number;
  groupId?: number;
}

export interface projectGroupForm {
  projectName?: string;
  projectId?: number;
  groupId?: number;
  name?: string;
    isManagerGroup?:boolean;
  corpId?: string;
  corpName?: string;
  startDate?: Date;
  endDate?: Date;
}

export interface UpdatePersonMemberformData {
  oldGroupId?: number;
  newGroupId?: number;
  name?: string;
  startDate?: Date;
  endDate?: Date;
  personId?: number;
}

/*******以下模型用工工人信息使用 *********/

/**
 * PersonGroupMemberCreateForm 登记人员信息模型
 */
export interface PersonGroupMemberCreateForm {
  bank?: PersonBankEditForm;
  /**
   * 证书
   */
  certificates?: PersonCertificateForm[] | null;
  member?: ProjectGroupMemberEditForm;
  person?: PersonCreateForm;
}

/**
 * PersonBankEditForm 银行工资卡信息模型
 */
export interface PersonBankEditForm {
  /**
   * 银行地址
   */
  bankAddress?: null | string;
  /**
   * 发放工资卡银行 参考银行代码字典表
   */
  bankCode?: null | string;
  /**
   * 发放工资卡银行联号
   */
  bankLinkNo?: null | string;
  /**
   * 发放工资银行名称
   */
  bankName?: null | string;
  /**
   * 发放工资银行卡号
   */
  cardNo?: null | string;
  corpId?: number | null;
  corpName?: null | string;
  /**
   * 主键
   */
  id?: number | null;
  /**
   * 人员身份证
   */
  personCardNo: string;
  personName?: null | string;
  type?: number;
}

/**
 * PersonCertificateForm 证书信息模型
 */
export interface PersonCertificateForm {
  /**
   * 合同附件
   */
  attachments?: StringAttachmentsForm[] | null;
  /**
   * 证书编号、注册证书编号、批准文号
   */
  certificateNo?: null | string;
  /**
   * 岗位证书专业、专业名称
   */
  certificateSpeciality?: null | string;
  /**
   * 证书类型（证书字典表顶级）
   */
  certificateType: number;
  /**
   * 持有人
   */
  holder?: null | string;
  /**
   * 发证日期、批准日期
   */
  issueDate?: Date | null;
  /**
   * 发证机关、审批机关
   */
  issuingAuthority?: null | string;
  /**
   * 证书名称
   */
  name?: null | string;
  /**
   * 执业印章号
   */
  practicingSealNumber?: null | string;
  /**
   * 注册有效期、有效期至
   */
  registerEndDate?: Date | null;
  /**
   * 评审组织
   */
  reviewOrganization?: null | string;
  /**
   * 技能类别
   */
  skillCategory?: null | string;
  /**
   * 技能分类、执业注册类型
   */
  skillClassification?: null | string;
  /**
   * 技能等级、资格名称、职称等级
   */
  skillLevel?: null | string;
  /**
   * 专业集合（只针对执业注册证书）
   */
  speciality?: PersonCertificateSpecialityForm[] | null;
  /**
   * 资质证书状态
   */
  status?: null | string;
}

/**
 * StringAttachmentsForm
 */
export interface StringAttachmentsForm {
  attachmentId?: null | string;
  attachmentName?: null | string;
  objectId?: null | string;
}

/**
 * PersonCertificateSpecialityForm，证书专业模型
 */
export interface PersonCertificateSpecialityForm {
  /**
   * 注册专业编号
   */
  code?: null | string;
  /**
   * 注册专业截至日期
   */
  endDate?: string | null;
  /**
   * 注册专业名称
   */
  specialityName?: null | string;
  /**
   * 注册专业起始日期
   */
  startDate?: string | null;
}

/**
 * ProjectGroupMemberEditForm，班组成员表单
 */
export interface ProjectGroupMemberEditForm {
  projectName?: string;
  projectId?: number;
  /**
   * 出场日期
   */
  endDate?: Date;
  /**
   * 班组ID
   */
  groupId?: number;
  /**
   * 班组名称
   */
  groupName?: null | string;
  /**
   * id
   */
  id?: number | null;
  /**
   * 是否班组长 参考是否字典表
   */
  isLeader?: boolean | null;
  /**
   * 发卡时间
   */
  issueCardDate?: Date | null;
  /**
   * 办卡采集相片
   */
  issueCardPic?: null | string;
  /**
   * 人员工资卡ID
   */
  personBankId?: number | null;
  /**
   * 人员工资卡银行
   */
  personBankName?: null | string;
  /**
   * 人员ID
   */
  personId?: number;
  role?: number;
  /**
   * 进场日期
   */
  startDate?: Date;
  /**
   * 人员状态(1:在场 0:离场)
   */
  status?: number;
  type?: number;
  postCategory?: number;
  /**
   * 开始工作日期
   */
  workDate?: Date | null;
  /**
   * 发放工资银行名称
   */
  bankName?: null | string;
  /**
   * 发放工资银行卡号
   */
  cardNo?: null | string;
  corpId?: number;
}

/**
 * PersonCreateForm 人员信息模型
 */
export interface PersonCreateForm {
  /**
   * 住址
   */
  address?: null | string;
  /**
   * 文化程度 参考文化程度字典表
   */
  cultureLevel?: number | null;
  /**
   * 是否有重大病史。参考是否字典表
   */
  hasBadMedicalHistory?: number | null;
  /**
   * 是否购买工伤或意外伤害保险 。参考是否字典表
   */
  hasBuyInsurance?: number | null;
  /**
   * 加入工会时间。如果加入工会，此字段必填
   */
  joinedTime?: Date | null;
  /**
   * 婚姻状况 参考婚姻状况字典表
   */
  maritalStatus?: number | null;
  /**
   * 手机号码
   */
  mobile?: null | string;
  /**
   * 政治面貌 参考政治面貌字典表
   */
  politicsType?: number | null;
  /**
   * 特长
   */
  specialty?: null | string;
  /**
   * token
   */
  token?: string;
  /**
   * 紧急联系人姓名
   */
  urgentLinkman?: null | string;
  /**
   * 紧急联系方式
   */
  urgentLinkmanHone?: null | string;
}
